Interactions between humans and computer systems began with very primitive interfaces, such as a light emitting diodes and switches. The interfaces have quickly evolved to the use of keyboards, touchpads and joysticks for the user to communicate with the computer to multimedia presentations by the computer to communicate to the user. User interfaces also refer to the manner in which programs communicate with each other. Most of these interfaces are static in nature, and are supported by programming in applications and other programs that are running on the computer. When the computer is being used to control real time processes, such as building automation or industrial process control, it is difficult to anticipate all of the potential user interactions with a computer, and to provide a static interface for each such interaction. The process being controlled can do things that are not anticipated, and also, further equipment, such as sensors and motors can be added to the process. There is a need for a flexible interface that can provide for user friendly interactions with the computer, even when the computer is being used to control changing processes.
Static design of user interfaces requires the application of specialized, ever-changing knowledge possessed by talented, trained individuals, responding to evolutionary and revolutionary changes in technological capabilities in an environment where it is difficult to quantify procedures or results. It is difficult for a programmer to keep up with such individuals. Once a static interface for a system is designed, using well known design rules, it is difficult to change, and unless there is a great need, the design usually remains unchanged. This can result with a system having a less than optimal user interface for extended periods of time, while the underlying capabilities of the system may have dramatically changed.
Further, even when performed optimally, static interaction design is no longer sufficient to meet the task and information needs of current systems. Current systems are getting more complex, with multiple collaborating computational and human agents. Areas of maximum unpredictability include which interactions will be required, what information will be available, what hardware and software capabilities will exist in local and distributed forms, what experience and capabilities will be contributed by humans, and what different devices will be used by the same human at different times. This unpredictability will also vary extensively over time and location.
While automatic design critiquing systems exist, there are as yet no systems which perform even the automatic design of static interactions. Earlier efforts abandoned design altogether, given that it was difficult to automate a design process that is difficult even for humans to perform. Instead, researchers concentrated on computer-aided design, which helps designers create static designs. Further, in U.S. Pat. No. 5,550,971 to Brunner et al., a knowledge base was constructed for automatic generation of query templates based on well understood and unchanging stereotyped interactions, such as query of a database.